import axios from "axios";
import { ElMessage } from 'element-plus'
import { refreshToken } from "./userApi";
// 引入 pinia
import { useUserStore } from "@/stores/user";
const instance = axios.create({
	baseURL: import.meta.env.VITE_BASE_URL,
	timeout: 3000,
})
// 请求拦截器
instance.interceptors.request.use(async (config) => {
	const store = useUserStore()
	if (/login|register/) return config
	await refreshToken()
	if (store.accessToken) {
		config.headers.Authorization = store.accessToken
	}
	return config
}, (error) => {
	return Promise.reject(error)
})
// 响应拦截器 
// 消息提示 
instance.interceptors.response.use((response) => {
	const store = useUserStore()
	// 登陆成功 获取token  存储pinia
	if (response.data.code === 10000) {
		// 数据存在  accessToken存在
		if (response.data.data && response.data.data.accessToken) {
			// 存储 token
			store.accessToken = response.data.data.accessToken
			// 存储 token时间
			store.accessTokenTime = Date.now()
		}
		if (response.data.data && response.data.data.refreshToken) {
			store.refreshToken = response.data.data.refreshToken
		}
		if (response.data.data && response.data.data.userInfo) {
			store.userInfo = response.data.data.userInfo
		}
	}
	// 成功提示
	ElMessage({
		message: response.data.message,
		type: ['info', 'success', 'warning', 'error', 'error', 'error',][Math.floor(response.status / 100) - 1],
	})
	return response
}, (error) => {
	// 错误提示
	ElMessage({
		message: error.message,
		type: ['info', 'success', 'warning', 'error', 'error', 'error',][Math.floor(error.status / 100) - 1],
	})
	return Promise.reject(error)
})
export default instance